package com.fast.alden.admin.service;

import com.fast.alden.common.service.BaseEntityService;
import com.fast.alden.data.model.SysApiResource;
import com.fast.alden.data.model.SysApiResourceRole;
import com.fast.alden.data.repo.SysApiResourceRepository;

import java.util.List;

/**
 * API资源管理服务类
 */
public interface SysApiResourceService extends BaseEntityService<SysApiResource, SysApiResourceRepository> {
    /**
     * 为指定角色分配菜单
     *
     * @param roleId         角色ID
     * @param apiResourceIds 菜单ID列表
     */
    void assign(Long roleId, List<Long> apiResourceIds);

    /**
     * 为指定角色取消分配菜单
     *
     * @param roleId         角色ID
     * @param apiResourceIds 菜单ID列表
     */
    void cancelAssign(Long roleId, List<Long> apiResourceIds);

    /**
     * 根据角色ID列表查找与之关联的API资源对象列表
     *
     * @param roleIds 角色ID列表
     * @return 关联的API资源对象列表
     */
    List<SysApiResourceRole> findApiResourceRolesByRoleIdIn(List<Long> roleIds);

    /**
     * 根据API资源ID列表查询API资源-角色关联数据列表
     *
     * @param apiResourceIds
     * @return
     */
    List<SysApiResourceRole> findApiResourceRolesByApiResourceIdIn(List<Long> apiResourceIds);

    /**
     * 根据API资源ID获取与之关联的角色列表
     *
     * @param apiResourceId
     * @return
     */
    List<SysApiResource> findApiResourcesByRoleId(Long apiResourceId);
}
